CircleCI OrbsでAWS SAM CLIのバージョンを指定する
CircleCI Orbsを使えば、AWS SAM CLIを簡単に導入できます。
AWS SAM CLIのバージョンを指定しない場合は、最新バージョンを利用します。
ライブラリのバージョンを固定することは多いと思いますが、同じようにCLIツールのバージョンも固定する場合もあります。 特にAWS SAM CLIは、ローカルPCとCircleCI上のバージョンが異なるとハマる可能性があるので、バージョンを指定してみました。
おすすめの方
- CircleCI OrbsでAWS SAM CLIのバージョンを固定したい方
- CircleCI OrbsでAWS SAM CLIのオプションを指定したい方
参考:AWS SAM CLIの最新バージョンを利用してハマった話
CircleCI OrbsでAWS SAM CLIの最新バージョンを利用していました。そして、バージョン1.33が公開されたとき、sam build --use-container
で失敗する現象に遭遇しました。AWS SAM CLI自体が原因ではなく、他のAWSサービスのアップデートが原因でした。
本記事では、「バージョンを指定したほうが良い」「最新バージョンを使うほうが良い」の言及はしません。あくまでも参考としての紹介です。
AWS SAM CLIのバージョンを確認する
AWS SAM CLIのGitHubのTagを確認すると、下記となっています。
CircleCIのワークフローを作成する
mkdir .circleci touch .circleci/config.yml
CircleCIのconfigファイル
version
でAWS SAM CLIのバージョンを指定します。指定しない場合は、最新バージョンのAWS SAM CLIがインストールされます。
なお、AWS CLIと違って、v
の文字も必要です。これは、GitHubのTagsの命名がvx.y.z
となっているからです。
version: 2.1 orbs: sam-cli: circleci/aws-sam-serverless@3.1.0 commands: check_version_latest: steps: - run: name: check version command: | sam --version check_version_fix: steps: - run: name: check version command: | sam --version jobs: check_version_latest: executor: sam-cli/default steps: - checkout - sam-cli/install - check_version_latest check_version_fix: executor: sam-cli/default steps: - checkout - sam-cli/install: version: v1.31.0 - check_version_fix workflows: version: 2 my-workflow: jobs: - check_version_latest: filters: tags: only: /.*/ - check_version_fix: filters: tags: only: /.*/ requires: - check_version_latest
CircleCIの設定を行う
プロジェクトのセットアップ
リポジトリをPushし、CircleCIでSet Up Project
を選択します。
configファイルのあるブランチ名を入力し、Let's GO
を選択します。
ワークフローが実行されますが、AWSアクセスキーの環境変数が無いので失敗します。
環境変数にアクセスキーを設定する
今回はバージョン確認をしたいだけなので、適当に設定します。
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
ワークフローの実行が完了するまで待ちます。
AWS SAM CLIのバージョンを確認する
check_version_latestのバージョン
最新バージョンの1.33.0
がインストールされていました。
SAM CLI, version 1.33.0
check_version_fixのバージョン
指定したバージョンの1.31.0
がインストールされていました。
SAM CLI, version 1.31.0
参考
- CircleCI Developer Hub - circleci/aws-sam-serverless
- CircleCI OrbsでAWS SAM CLIを超簡単に導入して使ってみる | DevelopersIO
- aws/aws-sam-cli: CLI tool to build, test, debug, and deploy Serverless applications using AWS SAM
- AWS CLI を設定する環境変数 - AWS Command Line Interface
- SAM CLI 1.33 Cannot Resolve ECR Container Images (Gets 404) · Issue #3329 · aws/aws-sam-cli